指令說明:檢查硬碟使用量
範例說明:
使用 df
查詢某個分割區的硬碟使用狀況
使用 df /dev
預設的 df 輸出會以 KB 為單位顯示磁碟用量,現在的硬碟容量都很大,這樣的輸出較不好閱讀,
這時可以加上-h,用適合閱讀的方式顯示資訊
使用df -h
僅顯示本機磁碟
使用 df -l
指令說明:更改檔案或目錄的擁有者或群組
範例說明:
同時更改擁有者與群組,連目錄下的所有次目錄或檔案同時更改擁有者。
-R:亦即連同次目錄下的所有檔案都會變更
chown -R "TW\Jack":"群組名稱" /tmp/tom
chown -R "TW\Jack":GroupID /tmp/tom
如何檢視檔案或資料夾的 GroupID ls -ln /tmp
指令說明:更改檔案或目錄的擁有群組
範例說明:
更改擁有群組
chgrp "群組名稱" test.txt
指令說明:檔案權限的改變
範例說明:
-R:亦即連同次目錄下的所有檔案都會變更
chmod -R 755 /usr/local/tomcat-9.0.50
指令說明:可以依照權限、擁有者、群組、檔案類型、日期與大小等條件來搜尋
範例說明:
找尋在 /home 目錄底下檔案名稱為 test.txt 的檔案:
find /home -name test.txt
找尋在根目錄底下名稱為 MyDir 的目錄:
find /usr/local/tomcat-9 -type d -name MyDir
使用 find 來執行 chmod:
find /usr/local/tomcat-9 -type d -exec chmod 755 {} \;
find /usr/local/tomcat-9 -type f -exec chmod 755 {} \;
find 的 -type 參數可以指定檔案的類型,常用的選項有:
d:目錄。
p:具名的 pipe(FIFO)。
f:一般的檔案。
l:連結檔,如果與 -L 或 -follow 參數同時使用時,就只會搜尋到有問題的連結檔,如果想要與 -L 同時使用,請改用 -xtype。
s:socket 檔案。
尋找文件檔案裡面的字串:
find "/usr/local" -name "*.txt" -exec grep -H "HelloString" {} \;
或
grep -rnw '/usr/local/tomcat/conf' -e 'SearchString'
或
grep -rnw 'SearchString' '/usr/local/tomcat/conf'
替換文件檔案裡面的字串:
find /tmp/www/hnsc/ -type f -exec sed -i "s/172.22.168.22/172.22.168.23/g" {} \;
指令說明:刪除執行中的程式或工作
範例說明:
kill -9 [PID]
PID:就是要中止的行程 ID(Process ID),這個 PID 可以從 ps 指令的輸出中得到。
參數說明:
-2:這個訊號與鍵盤輸入 Ctrl + C 是同樣的動作,也是通知程式停止執行。
-9:立刻強制停止程式執行。
-15:以正常的程序通知程式停止執行,這是預設的訊號。
-l:列出所有可用的訊號。
指令說明:設置指令的別名,讓這個指令別名永久有效,要寫入個別使用者的 ~/.bashrc 中。
範例說明:
echo "alias MyCmd='cd /usr/local/tomcat-9.0.50/'" >> ~/.bashrc
source ~/.bashrc
指令說明:cat 是 Concatenate (連續) 的簡寫, 主要的功能是將一個檔案的內容連續的印出在螢幕上面。
範例說明:
cat [file name]
選項與參數:
-A:相當於 -vET 的整合選項,可列出一些特殊字符而不是空白而已
-b:列出行號,僅針對非空白行做行號顯示,空白行不標行號
-E:將結尾的斷行字元 $ 顯示出來
-n:列印出行號,連同空白行也會有行號,與 -b 的選項不同
-T:將 [tab] 按鍵以 ^I 顯示出來
-v:列出一些看不出來的特殊字符
清空文件的內容:
cat /dev/null > /tmp/1.txt
指令說明:建立目錄的捷徑
範例說明:
ln -s /usr/local/openlogic-openjdk-8u282-b08-linux-x64/ /usr/local/java
指令說明:使用 scp 來複製網路上另一台電腦內的檔案
範例說明:
scp -r [遠端電腦的使用者名稱@ip:目錄路徑/檔名] [/本機的目的目錄/目的檔名]
scp -r JackChen@192.168.1.111:/usr/local/tomcat-9.0.50 /tmp
-r:則可連同底下的子目錄及檔案一併複製
按下 ENTER 鍵後,會要求輸入遠端電腦的使用者的密碼,輸入正確的密碼後,就開始複製
了,因其採 SSH 連線,具安全性且複製速度非常快。
指令說明:
範例說明:
sudo su - root /usr/local/tomcat/bin/startup.sh
sudo su - root /usr/local/apache2/bin/apachectl -k start
指令說明:
一、什麼是 tar
在 Linux 上,為了便於檔案以及目錄的交流、儲存以及傳輸,我們通常把一大堆檔案以及目錄「打包」為一個單一檔案,這個打包工具就是 tar,
而打包好的檔案就稱為 tar ball(xxx.tar),順帶一提的是 tar 本身並沒有壓縮檔案,而我們經常看到的 xxx.tar.gz(xxx.tar.gz) 是 tar ball 再經 gzip 壓縮,而 xxx.tar.Z 則是 tar ball 再經 compress 壓縮,而 xxx.tar.bz2 則是 tar ball 再經 bzip2 壓縮。
二、如何打包
tar [zcvf] [tar ball 檔案] [被 tar 的檔案或目錄]
ex : tar -zcvf tc.tar.gz /etc/*
c:create 一個 tar ball
f:指定 tar ball 檔名
v:verbose,列出過程
z:使用 gzip 壓縮 tar ball
三、如何解出
tar [-zxvf] [tar ball 檔案] [被 tar 的檔案或目錄]
ex : tar -zxvf etc.tar.gz /home/
x:解出 tar ball
f:指定 tar ball檔名
v:verbose,列出過程
z:使用 gzip 解壓縮(.gz)
指令說明:更改檔案時間戳記
範例說明:
touch [-參數] 檔案
參數說明:
-a : 僅修訂 access time;
-c : 僅修改時間,而不建立檔案;
-d : 後面可以接日期,也可以使用 --date="日期或時間"
-m : 僅修改 mtime ;
-t : 後面可以接時間,格式為[YYMMDDhhmm]
touch -t 1501011646 test.txt
touch -t 201509301657 /usr/local/tomcat/conf/server.xml
指令說明:一個非交談式的網路抓檔工具
範例說明:
wget --tries=1 --timeout=60 --background --quota=0 http://www.domain.com.tw/website/DataSyncServlet
用法: wget [選項]... [URL]...
長選項必須用的參數在使用短選項時也是必須的。
啟動:
-V, --version 顯示 Wget 版本並離開
-h, --help 印出這段說明文字
-b, --background 啟動後進入背景作業
-e, --execute=指令 執行 .wgetrc 形式的指令
紀錄訊息及輸入檔案:
-o, --output-file=檔案 將紀錄訊息寫入<檔案>中
-a, --append-output=檔案 將紀錄訊息加入<檔案>末端
-d, --debug 印出偵錯訊息
-q, --quiet 安靜模式 (不輸出訊息)
-v, --verbose 詳細輸出模式 (預設使用這個模式)
-nv, --non-verbose 關閉詳細輸出模式,但不啟用安靜模式
-i, --input-file=檔案 下載從檔案中找到的 URL
-F, --force-html 以 HTML 方式處理輸入檔
-B, --base=URL 使用 -F -i file 選項時,在相對鏈結前加入 URL
下載:
-t, --tries=次數 設定重試次數 (0 表示無限)
--retry-connrefused 即使連線被拒仍然會不斷嘗試
-O --output-document=檔案 將資料寫入指定檔案中
-nc, --no-clobber 不覆寫已經存在的檔案
-c, --continue 繼續下載已下載了一部份的檔案
--progress=方式 選擇下載進度的表示方式
-N, --timestamping 除非遠端檔案比較新,否則不下載遠端檔案
-S, --server-response 顯示伺服器回應訊息
--spider 不下載任何資料
-T, --timeout=秒數 指定所有時限為同一數值
--dns-timeout=秒數 指定 DNS 查找主機的時限
--connect-timeout=秒數 指定連線時限
--read-timeout=秒數 指定讀取資料的時限
-w, --wait=秒數 每次下載檔案之前等待指定秒數
--waitretry=秒數 每次重覆嘗試前稍等一段時間 (由 1 秒至指定秒數不等)
--random-wait 每次下載之前隨機地指定等待的時間
--no-proxy 禁止使用代理伺服器
-Q, --quota=大小 設定下載資料的限額大小
--bind-address=位址 使用本機的指定位址 (主機名稱或 IP) 進行連線
--limit-rate=速率 限制下載速率
--no-dns-cache 不記憶 DNS 查找主機的資料
--restrict-file-names=OS 只使用作業系統能夠接受的字元作為檔案字元
--ignore-case ignore case when matching files/directories.
-4, --inet4-only 只會連接 IPv4 地址
-6, --inet6-only 只會連接 IPv6 地址
--prefer-family=FAMILY 優先採用指定的位址格式,可以是 IPv6、IPv4
或者 none
--user=用戶 指定 ftp 和 http 用戶名稱
--password=PASS 指定 ftp 和 http 密碼
目錄:
-nd, --no-directories 不建立目錄
-x, --force-directories 強制建立目錄
-nH, --no-host-directories 不建立含有遠端主機名稱的目錄
--protocol-directories 在目錄中加上通訊協定名稱
-P, --directory-prefix=名稱 儲存檔案前先建立指定名稱的目錄
--cut-dirs=數目 忽略遠端目錄中指定<數目>的目錄層
HTTP 選項:
--http-user=用戶 指定 HTTP 用戶名稱
--http-passwd=密碼 指定 HTTP 密碼
--no-cache 不使用伺服器中的快取記憶資料
-E, --html-extension 將所有 HTML 文件加上 “.html” 延伸檔名
--ignore-length 忽略 Content-Length 標頭欄位
--header=字串 在連線資料標頭中加入指定字串
--max-redirect maximum redirections allowed per page.
--proxy-user=用戶 設定代理伺服器用戶名稱
--proxy-password=密碼 設定代理伺服器密碼
--referer=URL 在 HTTP 請求中包括 Referer: URL 標頭
--save-headers 將 HTTP 連線資料標頭存檔
-U, --user-agent=AGENT 宣稱為 AGENT 而不是 Wget/VERSION
--no-http-keep-alive 不使用 HTTP keep-alive (持久性連線)
--no-cookies 不使用 cookie
--load-cookies=檔案 程式啟動時由指定檔案載入 cookie
--save-cookies=檔案 程式結束後將 cookie 儲存至指定檔案
--keep-session-cookies 會載入和儲存暫時性的 cookie
--post-data=字串 使用 POST 方式送出字串
--post-file=檔案 使用 POST 方式送出檔案內容
--content-disposition honor the Content-Disposition header when choosing local file names (EXPERIMENTAL).
--auth-no-challenge Send Basic HTTP authentication information without first waiting for the server's challenge.
HTTPS (SSL/TLS) 選項:
--secure-protocol=PR 選擇安全通訊協定,可以使用 auto, SSLv2, SSLv3 或 TLSv1
--no-check-certificate 不檢驗伺服器的憑證
--certificate=檔案 指定用戶端的憑證檔案名稱
--certificate-type=類型 用戶端憑證的類型,可以是 PEM 或 DER
--private-key=檔案 指定私鑰檔案
--private-key-type=類型 私鑰的類型,可以是 PEM 或 DER
--ca-certificate=檔案 載有憑證管理中心 (CA) 簽章的檔案
--ca-directory=目錄 載有憑證管理中心 (CA) 簽章的目錄
--random-file=檔案 作為 SSL 隨機數產生程序 (PRNG) 的來源數據檔案
--egd-file=檔案 產生隨機數據的 EGD socket 檔案名稱
FTP 選項:
--ftp-user=用戶 指定 FTP 用戶名稱
--ftp-password=密碼 設定 FTP 密碼
--no-remove-listing 不刪除 .listing 檔案
--no-glob 不展開有萬用字元的 FTP 檔名
--no-passive-ftp 不使用「被動」傳輸模式
--retr-symlinks 在遞迴模式中,下載鏈結指示的目標檔案
(不包括目錄)
--preserve-permissions 沿用遠端檔案的權限
遞迴下載:
-r, --recursive 遞迴下載
-l, --level=數字 最大搜尋深度 (inf 或 0 表示無限)
--delete-after 刪除下載後的檔案
-k, --convert-links 將下載後的 HTML 的鏈結轉換為本地檔案
-K, --backup-converted 將檔案 X 轉換前先備份為 X.orig
-m, --mirror 相等於 -N -r -l inf --no-remove-listing 選項
-p, --page-requisites 下載所有顯示網頁所需的檔案,例如圖片等
--strict-comments 用嚴格方式 (SGML) 處理 HTML 注釋。
遞迴下載時有關接受/拒絕的選項:
-A, --accept=清單 接受的檔案樣式,以逗號分隔
-R, --reject=清單 排除的檔案樣式,以逗號分隔
-D, --domains=清單 接受的網域,以逗號分隔
--exclude-domains=清單 排除的網域,以逗號分隔
--follow-ftp 跟隨 HTML 文件中的 FTP 鏈結
--follow-tags=清單 會跟隨的 HTML 標籤,以逗號分隔
-G, --ignore-tags=清單 會忽略的 HTML 標籤,以逗號分隔
-H, --span-hosts 遞迴模式中可進入其它主機
-L, --relative 只跟隨相對鏈結
-I, --include-directories=清單 準備下載的目錄
-X, --exclude-directories=清單 準備排除的目錄
-np, --no-parent 不進入上層的目錄
指令說明:
範例說明:
用 netstat 偵測 DDOS 攻擊:
netstat -ntu | grep ESTAB | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr
計算連線數:
netstat -an |grep ':1433' |wc -l
查看 tcp port 被哪支程式(Process)佔用:
netstat -nlp |grep 9000
sudo lsof -i :9800 |grep 'LISTEN'
要在 Linux 上執行固定週期的時程,利用 crontab 這個內建的功能便可以完成,可以根據設置的時間參數來執行例行性的工作排程。
* 7 * * 1-6 /usr/local/MyDir/app/monitor.sh
參數依序是分鐘、小時、日期、月份、星期、command
※ 星期參數為 0 則代表是星期日。
參數說明:
星號:代表任何時刻都接受的意思
逗號:代表分隔時段,例如:30 9,17 * * * command
,代表早上9點半和下午五點半都執行 command。
減號:代表一段時間範圍,例如:15 9-12 * * * command
,代表從9點到12點的每個15分都執行 command。
反斜線n:n代表數字,表示每個 n 單位間隔,例如:*/5 * * * * command
,代表每隔 5 分鐘執行一次。
操作說明:
crontab 是會根據不同的使用者去判定可以操作的範圍。
crontab -l:列出該使用者擁有的 crontab 指令
crontab -e:編輯該使用者的 crontab 指令
crontab -r:將使用者的 crontab 全部清除(小心使用)
編輯完後就可以存檔離開,Linux 系統便會依照你設定的排程固定做事。
※ 下達指令請用絕對路徑避免錯誤
範例參考:
每五分鐘執行一次測試 shell script*/5 * * * * /home/ubuntu/test.sh
每天早上九點(除了星期日)執行 report.js0 9 * * 1-6 node /home/ubuntu/workspace/report.js
chronyc sources
取得核心版本資訊:
uname -a
取得作業系統版本資訊:
cat /etc/redhat-release
清空文件的內容:
echo -n "" > access_log